Conditional expressions in T (see section ) usually involve the evaluation of a test expression; the object yielded by the test is then used to make a control decision, depending on whether the value is false or true. There is one distinguished false value called #F. Any other value is considered to be true. A value intended to be used in this way is called a boolean or truth value.
A predicate is any procedure which yields truth values. Predicates are typically given names which end in ?, e.g. NULL? and EQ?. Calls to predicates are naturally used as test expressions.
An equality predicate is a two-argument predicate which is side-effectless and unaffected by side-effects, and acts like an equivalence relation in the mathematical sense.
The canonical boolean objects have convenient read syntax associated with them.
() reads as empty-list Read syntax
(), #T, and #F are elements of read syntax, not evaluatable symbols.
In T3, the canonical false value '#F is not necessarily the
same object as the empty list, ().
For compatibility with previous versions, in T3.1 false
and the empty list will continue to be the same object, but this
will change in a future release.
In T3.1 (eq? #F ()
true').
It is an error to use () in an evaluated position. This error currently generates a warning and treats () as '(), i.e. as if the empty list were self evaluating. An error will be signalled in the future. Use '() for empty lists, and NULL? to check for the empty list. NIL or '#F can be used for false values, and NOT to check for false values.